<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * 系统运行时初始化文件
 *
 * @author yifa
 */
defined('YF_PATH') or exit();

class APP {
    /*
     * 初始化应用
     */

    public static function run() {
        //第一次执行自动创建项目一些必要的文件
        APP::createAPP(); 
        //自动加载一些核心文件
        APP::autoload();
        //输出前已处理
        APP::outHandle();
        //执行应用
        APP::exec();
    }

    /**
     * 输出与处理
     */
    public static function outHandle() {
        outHeader();
    }

    /**
     * 加载系统核心文件
     */
    public static function autoload() {
        
    }

    /**
     * 应用执行
     */
    public static function exec() {
        /* URL参数预处理 **/
        // 系统变量安全过滤
        if(getConfig('VAR_FILTERS')) {
            $filters    =   explode(',',getConfig('VAR_FILTERS'));
            foreach($filters as $filter){
                // 全局参数过滤
                array_walk_recursive($_POST, $filter);
                array_walk_recursive($_GET, $filter);
            }
        }    
            
        if (is_file(ACTION_PATH . ROUTE_M . 'Action.class.php') && preg_match('/^[A-Za-z](\w)*$/',ROUTE_M)) {
            require ACTION_PATH . ROUTE_M . 'Action.class.php';
            $ActionName = ROUTE_M . 'Action';
            $Action = new $ActionName();
            if (method_exists($Action, ROUTE_A)) {
                $method = ROUTE_A;
                $Action->$method();
            } else {
                 halt(ROUTE_A . ' Method not exists');
            }
        }else{
                 halt(ROUTE_M . ' Module not exists');
        }
       
    }
    
    /**
     * 创建当前项目的默认文件
     */
    public static function createAPP(){
            //创建Action目录
            if(!is_dir(APP_PATH.'Action')){
                    if(@mkdir(APP_PATH.'Action', 0777, true));
            }
            //创建测试控制器
            if(!is_file(APP_PATH.'Action/IndexAction.class.php')){
                     $content     =
                        '<?php
                        // 本类由系统自动生成，仅供测试用途
                        class IndexAction extends Action{
                            public function index(){
                                header("Content-Type:text/html; charset=utf-8");
                                echo "<div style=\'font-weight:normal;color:blue;float:left;width:345px;text-align:center;border:1px solid silver;background:#E8EFFF;padding:8px;font-size:14px;font-family:Tahoma\'>^_^ Hello,欢迎使用<span style=\'font-weight:bold;color:red\'></span></div>";
                            }
                        }
                        ?>';
                                    file_put_contents(APP_PATH.'Action/IndexAction.class.php',$content);
            }else{
                return;
            }
            //创建系统项目公共文件夹
            if(!is_dir(APP_PATH.'Common')){
                    @mkdir(APP_PATH.'Common', 0777, true);
            }
            //创建公共目录,公共配置文件,公共函数文件
            if(!is_file(APP_PATH.'Common/Common.php')){
                $content     = '<?php
                        // 项目自定义函数
                        ?>';
                file_put_contents(APP_PATH.'Common/Common.php', $content);
            }
            if(!is_file(APP_PATH.'Common/Config.php')){
                $content     = '<?php
                        // 项目自定义配置
                        ?>';
                file_put_contents(APP_PATH.'Common/Config.php', $content);
            }
            //创建模型目录
            if(!is_dir(APP_PATH.'Model')){
                    @mkdir(APP_PATH.'Model', 0777, true);
            }
            //创建项目Public目录,创建当前项目当前主题的js,CSS,IMAGES目录
            if(!is_dir(APP_PATH.'../Public/js/'.  getConfig('THEME'))){
                    @mkdir(APP_PATH.'../Public/js/'.  getConfig('THEME'), 0777, true);
            }
            if(!is_dir(APP_PATH.'../Public/css/'.  getConfig('THEME'))){
                    @mkdir(APP_PATH.'../Public/css/'.  getConfig('THEME'), 0777, true);
            }
            if(!is_dir(APP_PATH.'../Public/images/'.  getConfig('THEME'))){
                    @mkdir(APP_PATH.'../Public/images/'.  getConfig('THEME'), 0777, true);
            }
            if(!is_dir(APP_PATH.'../Public/uploads/files')){
                    @mkdir(APP_PATH.'../Public/uploads/files', 0777, true);
            }
            if(!is_dir(APP_PATH.'../Public/uploads/images')){
                    @mkdir(APP_PATH.'../Public/uploads/images', 0777, true);
            }
            //插件扩展目录
            if(!is_dir(APP_PATH.'../Plugins')){
                    @mkdir(APP_PATH.'../Plugins', 0777, true);
            }
            
            //创建smarty配置的目录
            global $smarty;
            //smarty模板目录
            $template_dir = is_array($smarty->template_dir) ? $smarty->template_dir[0] : $smarty->template_dir;
            if(!is_dir($template_dir)){
                    @mkdir($template_dir, 0777, true);
            }
            //smarty编译目录
            if(!is_dir($smarty->compile_dir)){
                    @mkdir($smarty->compile_dir, 0777, true);
            }
            //缓存目录
            if(!is_dir($smarty->cache_dir)){
                    @mkdir($smarty->cache_dir, 0777, true);
            }
    } 

}

?>
